package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark01_Oper_Transform {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换
        // 所谓的算子，其实就是RDD的方法，将有一个RDD转换成另外一个RDD的方法，就称之为转换算子

        // TODO map
        val rdd : RDD[Int] = sc.makeRDD(List(1,2,3,4))

        // map算子将数据集中的每一条数据按照指定的规则进行转换，这里的转换可能是数值，也可能是类型
        // map算子需要传递一个参数，这个参数是函数类型：Int => U
        def mapFunction( num:Int ): Int = {
            num * 2
        }

        //val rdd1: RDD[Int] = rdd.map(mapFunction)
        //val rdd1: RDD[Int] = rdd.map((num:Int)=>{num * 2})
        //val rdd1: RDD[Int] = rdd.map((num:Int)=>num * 2)
        //val rdd1: RDD[Int] = rdd.map((num)=>num * 2)
        //val rdd1: RDD[Int] = rdd.map(num=>num * 2)
        val rdd1: RDD[Int] = rdd.map(_ * 2)

        rdd1.collect().foreach(println)

        sc.stop()

    }
}
